package define

// ParamRoleListPage 前端传来的获取角色列表参数结构
type ParamRoleListPage struct {
	Page    int    `json:"page" form:"page"`
	Size    int    `json:"size" form:"size"`
	Keyword string `json:"keyword" form:"keyword"`
}

// ParamRoleAdd 前端传来的创建角色信息结构
type ParamRoleAdd struct {
	Name       string          `json:"name"`
	Sort       int64           `json:"sort"`
	IsAdmin    int8            `json:"is_admin"`
	MapMenuStr string          `json:"map_menu_str"`
	MapMenu    map[string]uint `json:"map_menu"` // { identity: crud }
}

// ParamRoleDetail 前端传来的角色详情信息
type ParamRoleDetail struct {
	ParamRoleAdd
	Identity string `json:"identity" binding:"required"`
}

// ParamRoleAdmin 前端传来的角色管理员权限信息
type ParamRoleAdmin struct {
	Identity string `json:"identity" binding:"required"`
	IsAdmin  int8   `json:"is_admin"`
}

// RoleListReply 返回前端角色列表结构
type RoleListReply struct {
	Identity  string `json:"identity"`
	Name      string `json:"name"`
	Sort      int    `json:"sort"`
	IsAdmin   int    `json:"is_admin"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
}

// RoleDetailReply 返回前端的角色详情
type RoleDetailReply struct {
	ParamRoleAdd
	//HasChildren []string `json:"has_children"` // 有孩子（子级）的菜单标识列表
}

// RoleMenuIdCRUD 菜单集合查询时绑定 role_menu 表的 id 和 crud
type RoleMenuIdCRUD struct {
	Id       uint   `json:"id"`
	Identity string `json:"identity"`
	Crud     uint   `json:"crud"`
}
